package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.service.UserService;
import com.qf.utils.MailUtils;

import java.sql.SQLException;

/**
 * 针对前台用户的业务接口实现
 */
public class UserServiceImpl implements UserService {
    @Override
    public boolean checkUser(String username) {
        try {
            //调用前台的用户数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            User user = userDao.selectUserByUsername(username);
            if(user==null){
                //没查到,可以注册
                return  true ;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 注册用户
     * @param user 用户实体
     */
    @Override
    public void registerUser(User user) {

        try {
            //调用数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            userDao.addUser(user) ;

            //上面给数据库中添加数据了
            //给用户的注册邮箱中发送一份邮件,激活用户
            //邮件的工具类
            //参数1:接收邮箱
            //参数2:正文
            //参数3:标题
            System.out.println(user.getCode());
            MailUtils.sendMail(user.getEmail(),"欢迎会员注册,<a href='http://localhost:8080/Maven_Project_02_war/user?methodName=active&code="+user.getCode()+"'>请激活</a>",
                    "用户通过邮箱进行邮件激活") ;

        } catch (SQLException e) {
            e.printStackTrace();
        }


    }

    /**
     * 根据用户激活获取用户实体
     * @param code 激活码
     * @return 返回的用户实体
     */
    @Override
    public User getUserByCode(String code) {
        try {
            //调用前台用户的数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            User user = userDao.selectUserByCode(code);

           if(user ==null){
                return  null ;//找不到用户名
            }

           //用户存在,更新用户的激活状态
            user.setState(1) ;
           //调用数据访问接口
            userDao.updateUser(user);
            return  user ;

        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 根据用户名和密码获取实体
     * @param username 输入的用户名
     * @param password 输入的密码
     * @return  返回用户实体
     */
    @Override
    public User getUserByUsernameAndPassword(String username, String password) {

        try {
            //调用数据访问接口
            UserDao userDao = new UserDaoImpl() ;
            User user = userDao.selectUserByUsernameAndPwd(username, password);
            if(user!=null){
                return  user ;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}
